package javase1.day10.demo06;
/*
如何才能知道父类引用的对象，本来是什么子类？
格式：
对象  instanceof 类名称
将会得到一个Boolean值结果，也就是判断前面的对象能否被当做后边类型的实例


 */
public class DemoInstanceof {
    public static void main(String[] args) {
        Animal animal=new Dog();
        animal.eat();
        if(animal instanceof Cat){
            Cat cat=(Cat)animal;
            cat.catchMouse();
        }
        if(animal instanceof  Dog){
            Dog dog=(Dog)animal;
            dog.watchHouse();
        }

        Dog dog=new Dog();
        dog.eat();
        dog.watchHouse();



        //对于以上两种方法都能调用到Dog,那么多态显得没有什么意义。在自己main的方法中new一个Dog又判断向下转向上转
        //但是对于其他方法比如giveMePet(Animal animal);不是自己new出来的animal,对于传进来一个animal就需要判断
        giveMeAPet(new Cat());
    }
    public static void giveMeAPet(Animal animal){
        if(animal instanceof Cat){
            Cat cat=(Cat)animal;
            cat.catchMouse();
        }
        if(animal instanceof  Dog){
            Dog dog=(Dog)animal;
            dog.watchHouse();
        }

    }
}
